package com.enjoyor.soa.traffic.api.service.dubbo.gps;

import java.util.Date;
import java.util.List;

import com.enjoyor.soa.traffic.util.pojo.Page;
import com.enjoyor.soa.traffic.util.pojo.ResultPojo;

public interface PositionService {
	/**
	 * 监听当前定位
	 * @param listLocid 监听的设备号列表。为空时，监听所有设备
	 * @param listener 监听类
	 * @deprecated 弃用，请使用  {@link PositionListener}
	 * @return
	 */
	public ResultPojo addListener(List<String> listLocid, PositionListener listener);
	/**
	 * 监听当前定位
	 * @param listLocid 监听的设备号列表。为空时，监听所有设备
	 * @param listDevtype 监听的设备类型列表。为空时，监听所有设备
	 * @param listener 监听类
	 * @deprecated 弃用，请使用  {@link PositionListener}
	 * @return
	 */
	public ResultPojo addListener(List<String> listLocid, List<String> listDevtype, PositionListener listener);
	/**
	 * 取消监听
	 * @param listenerId 监听id
	 * @deprecated 弃用，请使用  {@link PositionListener}
	 */
	public void removeListener(long listenerId);
	
	/**
	 * 查询设备当前定位
	 * @param locid 定位标识
	 * @return
	 */
	public ResultPojo getPosition(String locid);
	
	/**
	 * 查询警员当前定位
	 * @param personId 警号
	 * @return
	 */
	public ResultPojo getPositionByPersonId(String personId);

	/**
	 * 查询所有警车列表
	 * @return
	 */
	public ResultPojo getPositionCar();

	/**
	 * 查询所有警员列表
	 * @return
	 */
	public ResultPojo getPositionName();
		
	/**
	 * 按照设备类型和设备状态查询所有设备列表
	 * @param token 令牌
	 * @param deviceType 设备类型：10-警用设备，11-警车，12-警务通
	 * @param deviceStatus 设备状态：0-异常，1-正常
	 * @return
	 */
	public ResultPojo getPositionList(String token,String deviceType,String deviceStatus);

	/**
	 * 查询设备查询历史轨迹
	 * @param locid 设备ID (非空)
	 * @param startTime 查询起始时间(非空)
	 * @param endTime   查询结束时间(非空)
	 * @param page		分页信息
	 * @return
	 */
	public ResultPojo getTrack(String locid,Date startTime,Date endTime,Page page);
		
	/**
	 * 查询设备查询历史轨迹
	 * @param locid 设备ID (非空)
	 * @param startTime 查询起始时间(非空)
	 * @param endTime   查询结束时间(非空)
	 * @return
	 */
	public ResultPojo getTrack(String locid,Date startTime,Date endTime);

	
	/**
	 * 按警号查询历史轨迹
	 * @param personid 警号 (非空)
	 * @param startTime 查询起始时间(非空)
	 * @param endTime   查询结束时间(非空)
	 * @param page		分页信息
	 * @return
	 */
	public ResultPojo getTrackName(String personid, Date startTime,Date endTime,Page page);
	
	/**
	 * 按警号查询历史轨迹
	 * @param personid 警号 (非空)
	 * @param startTime 查询起始时间(非空)
	 * @param endTime   查询结束时间(非空)
	 * @return
	 */
	public ResultPojo getTrackName(String personid, Date startTime,Date endTime);
	
	/**
	 * 按警车查询历史轨迹
	 * @param carcad 警车 (非空)
	 * @param startTime 查询起始时间(非空)
	 * @param endTime   查询结束时间(非空)
	 * @param page		分页信息
	 * @return
	 */
	public ResultPojo getTrackCar(String carcad, Date startTime,Date endTime,Page page);
	
	/**
	 * 按警车查询历史轨迹
	 * @param carcad 警车 (非空)
	 * @param startTime 查询起始时间(非空)
	 * @param endTime   查询结束时间(非空)
	 * @return
	 */
	public ResultPojo getTrackCar(String carcad, Date startTime,Date endTime);
	
	
	/**
	 * 获取网页端监听的js路径
	 * @return
	 */
	public ResultPojo getWebListenJsPath();
	
	
	
	/**
	 * 查询每小时在线设备率，离线率等 
	 * @param startTime 查询起始时间(非空)
	 * @param endTime   查询结束时间(非空)
	 * @param devicetype 设备类型,11 是警车数据，10是警用装备（警员），12 枪支，99 未知
	 * @return
	 */
	public ResultPojo getOnlineNum(String devicetype,Date startTime,Date endTime);

	/**
	 * 查询当前设备总量及在线数量
	 * @param deptId
	 * @param deviceType
	 * @return
	 */
	public ResultPojo getOnlineCount(String deptId,String deviceType);

	/**
	 * 获取设备状态
	 * @param personid 警号
	 * @param carcad 警车 
	 * @param beginTime 开始时间
	 * @param endTime 结束时间
	 * @return
	 */
	public ResultPojo getStatus(String personid, String carcad, Date beginTime, Date endTime);

	public ResultPojo searchDeviceBySpatial(String token,String strGeoJson,String deviceType,String deviceStatus);
}
